home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
TECHNICA
/
AUTOCAD
/
H107.ZIP
/
ADIR2CNC.ZIP
/
ADI2CNC.LST
< prev
next >
Wrap
File List
|
1990-11-29
|
37KB
|
696 lines
Thu 11-29-90 15:07:22 i CONTENTS
Page Line
11-27-90 12:24:02
adi2cnc.bas 1 1
adi2cnc.bas 9 494
11-27-90 12:24:02 adi2cnc.bas Pg 1
Thu 11-29-90 15:07:22 of 9
1-55
1 ' quick basic program to convert apple plotter commands
2 ' from autocad adi plotter file into G codes for use with
3 ' CNC milling machine
4 '
5 ' written by george mcduffee at allen county community college
6 ' march 13th, 1990
7 ' and released to the public domain.
8 '
9 ' program recognizes the following however other ADI commands can be added
10 ' if required.
11 '
12 ' 2 = home
13 ' G90
14 ' G00/000/000/000
15 '
16 ' 3 = move absolute [pen up]
17 ' G91
18 ' G01 000/000/0010
19 ' G90
20 ' G00 X/Y/Z
21 ' G91
22 ' G00 000/000/-010
23 '
24 ' 4 = plot absolute [pen down]
25 ' G91 X/Y/Z
26 '
27 ' exact conversion values will depend on how adi plotter selection
28 ' is set up. This program assumes 254 points to the inch horz and vert.
29 '
30 ' Plot limits assumed to be within CNC limits - 7.87 in [200 m/m] X
31 ' 3.94 in [100 m/m] for Emco F1-CNC machine.
32 '
33 ' -------- start of program -------------
34
35 OPTION BASE 1d OPTION BASE
36
37 DEFINT A-Zd DEFINT
38
39 CLSd CLS
40 LOCATE 10, 10d LOCATE
41 PRINT "This program will convert a AutoCadd ADI plotter output file"d PRINT
42 LOCATE 11, 10d LOCATE
43 PRINT "into CNC G codes. It assumes plot done at 1[inch] = 1[inch] and"d PRINT
44 LOCATE 12, 10d LOCATE
45 PRINT "plot size limited to 7.87 inches in the X direction and 3.94 inches"d PRINT
46 LOCATE 13, 10d LOCATE
47 PRINT "in the Y direction and that only ADI commands 2/3/4 [home/move abs/"d PRINT
48 LOCATE 14, 10d LOCATE
49 PRINT "plot abs are used. Output will be written to <INFILE>.CNC"d PRINT
50 LOCATE 16, 10d LOCATE
51 INPUT "input name of plot file"; plotfile$d INPUT
52
53 ' ---------------- OPEN FILES --------------------------
54 plotfile$ = LTRIM$(RTRIM$(plotfile$))d LTRIM$ RTRIM$
55
11-27-90 12:24:02 adi2cnc.bas Pg 2
Thu 11-29-90 15:07:22 of 9
56-110
56 temp = INSTR(plotfile$, ".")d INSTR
57
58 +--IF (temp = 0) THENd IF THEN
59 | plotfile$ = plotfile$ + ".plt"
60 +--END IFd END IF
61
62 OPEN plotfile$ FOR INPUT ACCESS READ AS #1 LEN = 16284d OPEN FOR INPUT ACCESS READ AS LEN
63
64 temp = INSTR(plotfile$, ".")d INSTR
65
66 +--IF temp = 0 THENd IF THEN
67 | gcodefile$ = plotfile$ + ".cnc"
68 +--ELSEd ELSE
69 | gcodefile$ = LEFT$(plotfile$, (temp - 1))d LEFT$
70 | gcodefile$ = gcodefile$ + ".cnc"
71 +--END IFd END IF
72
73 OPEN gcodefile$ FOR OUTPUT ACCESS WRITE AS #2 LEN = 16284d OPEN FOR OUTPUT ACCESS WRITE AS LEN
74
75
76 ' ----------------- DIM VARIABLES -----------------------
77 DIM comma(4) AS INTEGERd DIM AS INTEGER
78 DIM InLineCounter AS INTEGERd DIM AS INTEGER
79
80 ' Emco F1 omits decimal point
81 ' i.e. "0050" is 0.050
82 CONST clearence = " 150"d CONST
83
84 ' feed is in 1/10 inches per min.
85 ' i.e. "020" = 2 inches per min.
86 CONST Feed = " 20"d CONST
87
88 ' factor to convert ADI values to CNC values
89 ' in this case 0.1 M/M to .001 inches
90 CONST ConversionFactor# = .254d CONST
91
92 ' emco F1-CNC controller requires information in specific column format
93
94 DIM HeaderLine1 AS STRING * 4d DIM AS STRING
95 HeaderLine1 = CHR$(255) + CHR$(255) + CHR$(255) + "%"d CHR$ CHR$ CHR$
96
97 DIM HeaderLine2 AS STRING * 30d DIM AS STRING
98 HeaderLine2 = " N` G` X ` Y ` Z ` F "
99
100 DIM LastLine AS STRINGd DIM AS STRING
101 LastLine = " " + CHR$(34) + "I": 'this is > "I< indicating inch Verticald CHR$
102 LastLine = LastLine + CHR$(16) + CHR$(16) + CHR$(16) + CHR$(16) + CHR$(16)d CHR$ CHR$ CHR$ CHR$ CHR$
103 LastLine = LastLine + CHR$(16) + CHR$(16) + CHR$(16) + CHR$(16) + CHR$(16)d CHR$ CHR$ CHR$ CHR$ CHR$
104
105 CONST FeedRate = " 10"d CONST
106
107 TYPE EmcoLined TYPE
108 filler AS STRING * 3d AS STRING
109 BlockNo AS STRING * 3d AS STRING
110 Gcode AS STRING * 3d AS STRING
11-27-90 12:24:02 adi2cnc.bas Pg 3
Thu 11-29-90 15:07:22 of 9
111-165
111 CNCx AS STRING * 6d AS STRING
112 CNCy AS STRING * 5d AS STRING
113 CNCz AS STRING * 6d AS STRING
114 Feed AS STRING * 4d AS STRING
115 END TYPEd END TYPE
116
117 DIM emco AS EmcoLined DIM AS
118 emco.filler = " "
119 emco.BlockNo = "000"
120 emco.Gcode = " 21"
121 emco.CNCx = " 00"
122 emco.CNCy = " 00"
123 emco.CNCz = " 00"
124 emco.Feed = " "
125
126
127 DIM blankemco AS EmcoLined DIM AS
128 blankemco.filler = " "
129 blankemco.Gcode = " "
130 blankemco.CNCx = " "
131 blankemco.CNCy = " "
132 blankemco.CNCz = " "
133 blankemco.Feed = " "
134
135 emco = blankemco
136
137 DIM OldCNCx AS STRING * 6d DIM AS STRING
138 OldCNCx = " 00"
139
140 DIM OldCNCy AS STRING * 5d DIM AS STRING
141 OldCNCy = " 00"
142
143 DIM OldCNCz AS STRING * 6d DIM AS STRING
144 OldCNCz = " 00"
145
146 DIM blank6 AS STRING * 6d DIM AS STRING
147 blank6 = " "
148 DIM blank5 AS STRING * 5d DIM AS STRING
149 blank5 = " "
150 DIM blank4 AS STRING * 4d DIM AS STRING
151 blank4 = " "
152 DIM blank3 AS STRING * 3d DIM AS STRING
153 blank3 = " "
154
155 DIM tempd AS DOUBLEd DIM AS DOUBLE
156
157 DIM pc, px, py AS DOUBLEd DIM AS DOUBLE
158
159 TYPE emcostringd TYPE
160 es1 AS STRING * 30d AS STRING
161 END TYPEd END TYPE
162
163 DIM es AS emcostringd DIM AS
164
165
11-27-90 12:24:02 adi2cnc.bas Pg 4
Thu 11-29-90 15:07:22 of 9
166-220
166 ' ----------------- START OF MAIN -----------------------
167
168 ' send header lines to cnc file
169 PRINT #2, HeaderLine1d PRINT
170 PRINT #2, HeaderLine2d PRINT
171
172
173 linecount = -1
174
175 ' set cnc to absolute mode
176
177 emco = blankemco
178
179 GOSUB MakeNstringd GOSUB
180
181 emco.BlockNo = Nstring$
182 emco.Gcode = " 90"
183 PRINT #2, emco.filler; emco.BlockNo; emco.Gcode; emco.CNCx; emco.CNCy; emco.CNCz; emco.Feedd PRINT
184
185
186 +--WHILE NOT (EOF(1))d WHILE NOT EOF
187 | LINE INPUT #1, PlotterLine$d LINE INPUT
188 |
189 | ' for debug
190 | ' PRINT PlotterLine$
191 |
192 | GOSUB Convert2CNCd GOSUB
193 +--WENDd WEND
194
195 ' write M30 as last line of cnc file
196
197 GOSUB MakeNstringd GOSUB
198 emco = blankemco
199 emco.BlockNo = Nstring$
200 emco.Gcode = "M30": 'rapid traverse
201 emco.CNCx = " "
202 emco.CNCy = " "
203 emco.CNCz = " "
204 PRINT #2, emco.filler; emco.BlockNo; emco.Gcode; emco.CNCx; emco.CNCy; emco.CNCz; emco.Feedd PRINT
205
206 ' add lst line
207 PRINT #2, LastLined PRINT
208 ' PRINT #2, ""
209
210
211 CLOSEd CLOSE
212
213 ' display warning if block count greater than F1-CNC limits
214 +--IF linecount > 221 THENd IF THEN
215 | CLSd CLS
216 | LOCATE 10, 10d LOCATE
217 | PRINT "WARNING"d PRINT
218 | LOCATE 12, 10d LOCATE
219 | PRINT "Generated program contains "; linecount; " blocks"d PRINT
220 | LOCATE 14, 10d LOCATE
11-27-90 12:24:02 adi2cnc.bas Pg 5
Thu 11-29-90 15:07:22 of 9
221-275
221 | PRINT "The limit of the EMCO controller is 221."d PRINT
222 | LOCATE 16, 10d LOCATE
223 | PRINT "DATA is usable -- edit and run as two programs"d PRINT
224 +--END IFd END IF
225
226
227 ENDd END
228
229 ' -------------------- END OF MAIN -----------------------
230
231 ' -----------
232 Convert2CNC:
233
234
235 ' set px and py [plotter x and plotter y to -1
236 ' if -1 shows these were not set and error if not 'home'
237 pc = -1
238 px = -1
239 py = -1
240
241 ' parse plotter line and check data format
242 'count the number of commas in plotter line assume 2 max but check for
243 ' three for error condition
244 comma(1) = 0
245 comma(2) = 0
246 comma(3) = 0
247
248 'increment plotter input file line counter for error reporting
249 InLineCounter = InLineCounter + 1
250
251 comma(1) = INSTR(PlotterLine$, ",")d INSTR
252
253 +--IF comma(1) > 0 THENd IF THEN
254 | comma(2) = INSTR(comma(1) + 1, PlotterLine$, ",")d INSTR
255 +--END IFd END IF
256
257 +--IF comma(2) > 0 THENd IF THEN
258 | comma(3) = INSTR(comma(2) + 1, PlotterLine$, ",")d INSTR
259 +--END IFd END IF
260
261 ' for debug
262 ' PRINT "In Line = "; InLineCounter
263 ' PRINT "comma(1) = "; comma(1)
264 ' PRINT "comma(2) = "; comma(2)
265 ' PRINT "comma(3) = "; comma(3)
266
267 +--IF comma(3) > 0 THENd IF THEN
268 | CLSd CLS
269 | LOCATE 5, 10d LOCATE
270 | PRINT "error condition in input file at line "; InLineCounterd PRINT
271 | LOCATE 7, 10d LOCATE
272 | PRINT "More than 2 commas found. "d PRINT
273 | LOCATE 9, 10d LOCATE
274 | PRINT "correct input [plotter] file and rerun. Press [Enter] key to exit."d PRINT
275 | INPUT ; "", dummy$d INPUT
11-27-90 12:24:02 adi2cnc.bas Pg 6
Thu 11-29-90 15:07:22 of 9
276-330
276 | ENDd END
277 +--END IFd END IF
278
279 +--IF comma(1) = 0 THENd IF THEN
280 | pc = VAL(PlotterLine$)d VAL
281 +--ELSEd ELSE
282 | +--IF comma(2) = 0 THENd IF THEN
283 | | 'error as line must have no or two commas
284 | | CLSd CLS
285 | | LOCATE 5, 10d LOCATE
286 | | PRINT "error condition in input file at line "; InLineCounterd PRINT
287 | | LOCATE 7, 10d LOCATE
288 | | PRINT "Only 1 comma found. Line must have no or two commas"d PRINT
289 | | LOCATE 9, 10d LOCATE
290 | | PRINT "correct input [plotter] file and rerun. Press [Enter] key to exit."d PRINT
291 | | INPUT ; "", dummy$d INPUT
292 | | ENDd END
293 | +--END IFd END IF
294 |
295 | pc = VAL(PlotterLine$)d VAL
296 | temp$ = MID$(PlotterLine$, comma(1) + 1, (comma(2) - comma(1) - 1))d MID$
297 | px = VAL(temp$)d VAL
298 | temp$ = MID$(PlotterLine$, comma(2) + 1)d MID$
299 | py = VAL(temp$)d VAL
300 +--END IFd END IF
301
302 ' debug
303 ' PRINT "pc ="; pc
304 ' PRINT "px ="; px
305 ' PRINT "py ="; py
306
307 GOSUB WriteGCoded GOSUB
308
309
310 RETURNd RETURN
311 ' -----------
312
313 ' -----------
314 WriteGCode:
315 ' px and py from plotter file are in .1 M/M
316
317 ' save existing CNC x/y/z values for possible later use to withdraw cutter
318 ' without setting to relative mode and then back [saves blocks]
319 +--IF NOT emco.CNCx = " " THENd IF NOT THEN
320 | OldCNCx = emco.CNCx
321 +--END IFd END IF
322
323 +--IF NOT emco.CNCy = " " THENd IF NOT THEN
324 | OldCNCy = emco.CNCy
325 +--END IFd END IF
326
327 +--IF NOT emco.CNCz = " " THENd IF NOT THEN
328 | OldCNCz = emco.CNCz
329 +--END IFd END IF
330
11-27-90 12:24:02 adi2cnc.bas Pg 7
Thu 11-29-90 15:07:22 of 9
331-385
331
332 ' move absolute pen up
333 IF (pc = 3) THEN GOSUB MoveCutterUpd IF THEN GOSUB
334
335 'move absolute pen down
336 IF pc = 4 THEN GOSUB MillLined IF THEN GOSUB
337
338 ' home
339 IF (pc = 2 AND px = -1 AND py = -1) THEN GOSUB Homed IF AND AND THEN GOSUB
340
341 RETURNd RETURN
342 ' --------------
343
344 ' -------------
345 MakeNstring:
346
347 linecount = linecount + 1
348
349 n$ = STR$(linecount)d STR$
350 n$ = RTRIM$(LTRIM$(n$))d RTRIM$ LTRIM$
351 ++--SELECT CASE LEN(n$)d SELECT CASE LEN
352 |+-------CASE IS = 1d CASE IS
353 || Nstring$ = "00" + n$
354 |+-------CASE IS = 2d CASE IS
355 || Nstring$ = "0" + n$
356 |+-------CASE IS = 3d CASE IS
357 || Nstring$ = n$
358 |+-------CASE ELSEd CASE ELSE
359 ++--END SELECTd END SELECT
360
361 RETURNd RETURN
362 ' ----------
363
364 ' ---------- homes the head
365 Home:
366
367 'withdraw cutter under rapid traverse
368 GOSUB MakeNstringd GOSUB
369 emco = blankemco
370 emco.BlockNo = Nstring$
371 emco.Gcode = " 00": 'rapid traverse
372 emco.CNCx = OldCNCx
373 emco.CNCy = OldCNCy
374 emco.CNCz = " 00"
375 PRINT #2, emco.filler; emco.BlockNo; emco.Gcode; emco.CNCx; emco.CNCy; emco.CNCz; emco.Feedd PRINT
376
377 ' move to home under rapid traverse
378 GOSUB MakeNstringd GOSUB
379 emco = blankemco
380 emco.BlockNo = Nstring$
381 emco.Gcode = " 00": 'rapid traverse
382 emco.CNCx = " 00"
383 emco.CNCy = " 00"
384 emco.CNCz = " 00"
385 PRINT #2, emco.filler; emco.BlockNo; emco.Gcode; emco.CNCx; emco.CNCy; emco.CNCz; emco.Feedd PRINT
11-27-90 12:24:02 adi2cnc.bas Pg 8
Thu 11-29-90 15:07:22 of 9
386-440
386
387
388 RETURNd RETURN
389 ' -----------
390
391 ' ----------
392 MoveCutterUp:
393
394 ' withdraw cutter at rapid traverse
395 GOSUB MakeNstringd GOSUB
396 emco = blankemco
397 emco.BlockNo = Nstring$
398 emco.Gcode = " 00": 'rapid traverse
399 emco.CNCx = OldCNCx
400 emco.CNCy = OldCNCy
401 emco.CNCz = " 00"
402 PRINT #2, emco.filler; emco.BlockNo; emco.Gcode; emco.CNCx; emco.CNCy; emco.CNCz; emco.Feedd PRINT
403
404
405 ' move to new location at rapid traverse
406 GOSUB MakeNstringd GOSUB
407 emco = blankemco
408 GOSUB ConvertP2Gd GOSUB
409 emco.BlockNo = Nstring$
410 emco.Gcode = " 00": 'rapid traverse
411 emco.CNCz = " 00"
412 PRINT #2, emco.filler; emco.BlockNo; emco.Gcode; emco.CNCx; emco.CNCy; emco.CNCz; emco.Feedd PRINT
413
414
415 ' bring cutter down at proper feed rate at new location
416 GOSUB MakeNstringd GOSUB
417 emco.BlockNo = Nstring$
418 emco.Gcode = " 01": 'linear interpolation
419 emco.CNCz = clearence
420 emco.Feed = FeedRate
421 MID$(emco.CNCz, 1) = "-": '- to feed downd MID$
422 PRINT #2, emco.filler; emco.BlockNo; emco.Gcode; emco.CNCx; emco.CNCy; emco.CNCz; emco.Feedd PRINT
423
424
425
426
427 RETURNd RETURN
428 ' ----------
429
430 ' ----------
431 MillLine:
432 ' mill line
433 GOSUB MakeNstringd GOSUB
434 emco = blankemco
435 GOSUB ConvertP2Gd GOSUB
436 emco.CNCz = clearence
437 MID$(emco.CNCz, 1, 1) = "-"d MID$
438 emco.BlockNo = Nstring$
439 emco.Gcode = " 01": 'linear interp
440 emco.Feed = FeedRate
11-27-90 12:24:02 adi2cnc.bas Pg 9
Thu 11-29-90 15:07:22 of 9
441-494
441 PRINT #2, emco.filler; emco.BlockNo; emco.Gcode; emco.CNCx; emco.CNCy; emco.CNCz; emco.Feedd PRINT
442
443
444
445 RETURNd RETURN
446 ' ----------
447
448 ConvertP2G:
449 ' converts adi plotter values to 1000's of inch for F1 controller
450
451 OldCNCx = emco.CNCx
452 OldCNCy = emco.CNCy
453
454
455 tempd = (px / ConversionFactor)
456 tempI = INT(tempd)d INT
457 temp$ = ""
458 temp$ = STR$(tempI)d STR$
459 temp$ = RTRIM$(LTRIM$(temp$))d RTRIM$ LTRIM$
460 ++--SELECT CASE LEN(temp$)d SELECT CASE LEN
461 |+-------CASE IS = 1d CASE IS
462 || temp$ = " " + temp$
463 |+-------CASE IS = 2d CASE IS
464 || temp$ = " " + temp$
465 |+-------CASE IS = 3d CASE IS
466 || temp$ = " " + temp$
467 |+-------CASE 4d CASE
468 || temp$ = " " + temp$
469 |+-------CASE ELSEd CASE ELSE
470 || temp$ = "~~~~~~"
471 ++--END SELECTd END SELECT
472 emco.CNCx = temp$
473
474 tempd = (py / ConversionFactor)
475 tempI = INT(tempd)d INT
476 temp$ = ""
477 temp$ = STR$(tempI)d STR$
478 temp$ = RTRIM$(LTRIM$(temp$))d RTRIM$ LTRIM$
479 ++--SELECT CASE LEN(temp$)d SELECT CASE LEN
480 |+-------CASE IS = 1d CASE IS
481 || temp$ = " " + temp$
482 |+-------CASE IS = 2d CASE IS
483 || temp$ = " " + temp$
484 |+-------CASE IS = 3d CASE IS
485 || temp$ = " " + temp$
486 |+-------CASE 4d CASE
487 || temp$ = " " + temp$
488 |+-------CASE ELSEd CASE ELSE
489 || temp$ = "~~~~~"
490 ++--END SELECTd END SELECT
491 emco.CNCy = temp$
492
493 RETURNd RETURN
494
Thu 11-29-90 15:07:22 INDEX/Cross Reference
Format: Page.Line
Category: All identifiers
1 11-27-90 12:24:02 adi2cnc.bas
#1 2=62 4=187
#2 2.73 4.169 4.170 4.183 4.204 4.207 7.375 7.385 8.402 8.412 8.422 9.441
.254 2.90
blankemco 3.127 3.135 4.177 4.198 7.369 7.379 8.396 8.407 8.434
blankemco.CNCx 3=130
blankemco.CNCy 3=131
blankemco.CNCz 3=132
blankemco.Feed 3=133
blankemco.filler 3=128
blankemco.Gcode 3=129
blank3 3.152 3=153
blank4 3.150 3=151
blank5 3.148 3=149
blank6 3.146 3=147
BlockNo 2.109
clearence 2.82 8.419 8.436
CNCx 3.111
CNCy 3.112
CNCz 3.113
comma 2.77 5.244 5.245 5.246 5.251 5.253 5.254 5.257 5.258 5.267 6.279 6.282
6.296 6.298
ConversionFactor 9.455 9.474
ConversionFactor# 2.90
ConvertP2G <9.448 8.408 8.435
Convert2CNC <5.232 4.192
Thu 11-29-90 15:07:22 INDEX/Cross Reference
Format: Page.Line
Category: All identifiers
dummy$ 5=275 6=291
emco 3.117 3=135 4=177 4=198 7=369 7=379 8=396 8=407 8=434
emco.BlockNo 3=119 4=181 4.183 4=199 4.204 7=370 7.375 7=380 7.385 8=397 8.402
8=409 8.412 8=417 8.422 8=438 9.441
emco.CNCx 3=121 4.183 4=201 4.204 6.319 6.320 7=372 7.375 7=382 7.385 8=399
8.402 8.412 8.422 9.441 9.451 9=472
emco.CNCy 3=122 4.183 4=202 4.204 6.323 6.324 7=373 7.375 7=383 7.385 8=400
8.402 8.412 8.422 9.441 9.452 9=491
emco.CNCz 3=123 4.183 4=203 4.204 6.327 6.328 7=374 7.375 7=384 7.385 8=401
8.402 8=411 8.412 8=419 8p421 8.422 8=436 8p437 9.441
emco.Feed 3=124 4.183 4.204 7.375 7.385 8.402 8.412 8=420 8.422 8=440 9.441
emco.filler 3=118 4.183 4.204 7.375 7.385 8.402 8.412 8.422 9.441
emco.Gcode 3=120 4=182 4.183 4=200 4.204 7=371 7.375 7=381 7.385 8=398 8.402
8=410 8.412 8=418 8.422 8=439 9.441
EmcoLine 2.107 3.117 3.127
emcostring 3.159 3.163
es 3.163
es1 3.160
Feed 2.86 3.114
FeedRate 2.105 8.420 8.440
filler 2.108
Gcode 2.110
gcodefile$ 2=67 2=69 2=70 2.73
HeaderLine1 2.94 2=95 4.169
HeaderLine2 2.97 2=98 4.170
Home <7.365 7.339
InLineCounter 2.78 5=249 5.270 6.286
LastLine 2.100 2=101 2=102 2=103 4.207
Thu 11-29-90 15:07:22 INDEX/Cross Reference
Format: Page.Line
Category: All identifiers
linecount 4=173 4.214 4.219 7=347 7p349
MakeNstring <7.345 4.179 4.197 7.368 7.378 8.395 8.406 8.416 8.433
MillLine <8.431 7.336
MoveCutterUp <8.392 7.333
n$ 7=349 7=350 7p351 7.353 7.355 7.357
Nstring$ 4.181 4.199 7=353 7=355 7=357 7.370 7.380 8.397 8.409 8.417 8.438
OldCNCx 3.137 3=138 6=320 7.372 8.399 9=451
OldCNCy 3.140 3=141 6=324 7.373 8.400 9=452
OldCNCz 3.143 3=144 6=328
pc 3.157 5=237 6=280 6=295 7.333 7.336 7.339
plotfile$ 1=51 1=54 2p56 2=59 2.62 2p64 2.67 2p69
PlotterLine$ 4=187 5p251 5p254 5p258 6p280 6p295 6p296 6p298
px 3.157 5=238 6=297 7.339 9.455
py 3.157 5=239 6=299 7.339 9.474
temp 2=56 2.58 2=64 2.66 2.69
temp$ 6=296 6p297 6=298 6p299 9=457 9=458 9=459 9p460 9=462 9=464 9=466 9=468
9=470 9.472 9=476 9=477 9=478 9p479 9=481 9=483 9=485 9=487 9=489 9.491
tempd 3.155 9=455 9p456 9=474 9p475
tempI 9=456 9p458 9=475 9p477
WriteGCode <6.314 6.307